import re
import pandas as pd

# 读取CSV文件
data = pd.read_csv('music.csv')

# 定义一个函数，用于提取字符串中的数字
def extract_number(s):
    numbers = re.findall(r'\d+', s)
    if numbers:
        return int(numbers[0])
    else:
        return 0

# 将评价人数中的逗号去除，并将数据类型转换为整数
data['count'] = data['count'].str.replace(',', '').apply(extract_number)

# 计算不同种类音乐的评价人数总和
classical_counts = data.groupby('classical')['count'].sum()

# 将音乐种类为其他的列表的评价人数进行加和
empty_classical_counts = data.loc[data['classical'].isnull(), 'count'].sum()

# 将评价人数总和添加到数据中
data['classical_total_count'] = data['classical'].map(classical_counts)
data.loc[data['classical'].isnull(), 'classical_total_count'] = empty_classical_counts

# 仅保留歌曲名称和评价人数和总和那两列
filtered_data = data.loc[:, ['classical', 'classical_total_count']]

# 将音乐种类为空的列表定义为其他类
filtered_data['classical'] = filtered_data['classical'].fillna('其他')

# 删除音乐种类重复的信息
filtered_data = filtered_data.drop_duplicates(subset='classical')

# 将数据按照评价人数总和降序排列
filtered_data = filtered_data.sort_values(by='classical_total_count', ascending=False)

# 将筛选后的数据保存到CSV文件
filtered_data.to_csv('不同种类的音乐的评价人数.csv', index=False)








